
#ifndef _FUNCTIONLIB_H
#define _FUNCTIONLIB_H

#include "stdint.h"

/*获取设备产品型号*/
uint32_t get_product_type(void);

/*设置设备产品型号*/
void set_product_type(uint32_t type);


//数组转换为UINT32类型(大端字节数组，高字节在低地址)，转换为UINT32类型
int32_t BufToUint(uint8_t* in, uint8_t len);

uint32_t BufToU32(uint8_t* in, uint8_t len);

//数组转换为UINT16类型(大端字节数组，高字节在低地址)，转换为UINT16类型

uint16_t BufToU16(uint8_t* in);

//U16转换为字符串(大端字节数组，高字节在低地址)

void U16ToBuf(uint16_t in, uint8_t* out);


//U32转换为字符串(大端字节数组，高字节在低地址)

void U32ToBuf(uint32_t in, uint8_t* out);


/**
 * @brief       将INT格式转换为BCD格式，小端模式
 * @param
                BCD格式输出，高位在高地址(小端模式)

 * @out         地址BCD码
 * @par         创建
 *              lcj于2020-7-2创建
 */

void int_to_bcd(uint32_t intvalue, uint8_t* bcddata, uint8_t bcdlen);


/**
 * @brief       将BCD格式转换为int格式
 * @param
                bcd格式输入，高位在高地址(小端模式)

 * @out         地址BCD码
 * @par         创建
 *              lcj于2020-7-2创建
 */

void bcd_to_int(uint32_t* intvalue, uint8_t* bcddata, uint8_t bcdlen);


void ascii_2_hex(uint8_t* dst, uint8_t* src, uint32_t len);


void hex_2_ascii(uint8_t* dst, uint8_t* src, uint32_t len);

void ascii_2_int(uint8_t* dst, uint8_t* src, uint32_t len);


#endif
